
<%@page import="gamebook.Administrador"%>
<%@page import="gamebook.Partida"%>
<%@page import="java.io.File"%>
<%@page import="gamebook.Foto"%>
<%@page import="gamebook.Paginacion"%>
<%@page import="gamebook.TipoMensaje"%>
<%@page import="gamebook.MensajeGenerico"%>
<%@page import="gamebook.Evento"%>
<%@page import="java.util.Date"%>
<%@page import="gamebook.UsuarioGenerico"%>
<%@page import="gamebook.Publicacion"%>
<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="gamebook.Usuario"%>

<%
    //Cogemos el usuario que está utilizando la web del objeto Session
    UsuarioGenerico usuario = (UsuarioGenerico) session.getAttribute("usuario");

    //Cogemos el usuario del cual estamos viendo el muro
    UsuarioGenerico usuariomuro = (UsuarioGenerico) session.getAttribute("usuariomuro");


    //Cogemos el número de la página que estamos GET (pag), si no hay es la primera página
    int pagina = Paginacion.cogePagDeGet(request.getParameter("pag"));

    //Vemos cuantas publicaciones en total tiene el usuario para mostrar
    int publicacionesTotales = Publicacion.contarPorDestinatario(usuariomuro);

    //Hacemos la paginación
    Paginacion paginacion = new Paginacion(5, publicacionesTotales, pagina);

    //Valor de la opcion
    String opcionString = "irAInicio";

    //Pagina actual
    String paginaString = "&pag=" + (paginacion.getPaginaActual() + 1);

%>

<!DOCTYPE html>

<html>
    <head>
        <link href="css/reset.css" type="text/css" rel="stylesheet" />
        <link href="css/gamebook.css" type="text/css" rel="stylesheet" />
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title><%= usuariomuro.getNombre() + " " + usuariomuro.getApellidos()%></title>
    </head>
    <body>
        <%




            //Antes de poner nada en la página, vamos a ver si tenemos que borrar algo
            String paramBorrar = request.getParameter("borrar");
            String paramConfirmado = request.getParameter("confirmado");
            //BORRAR: se basa en dos parámetros 'borrar' es el id del mensaje que vamos a borrar
            //y 'confirmado' vale 'true' si se ha confirmado el borrado

            try {
                //Convertimos el valor String de paramBorrar a uno entero
                int idBorrar = Integer.parseInt(paramBorrar); //Si el id no es numerico nos olvidamos de borrar

                if (paramBorrar != null) { //Si hay un mensaje seleccionado para borrar lo pedimos a persistencia
                    MensajeGenerico mensajeGenerico = MensajeGenerico.seleccionarPorId(idBorrar);

                    //Si nos devuelve null es que el mensaje no existe
                    boolean sePuedeBorrar = true;
                    if (mensajeGenerico == null) {
                        sePuedeBorrar = false;
                    } else {
                        if (mensajeGenerico.getUsuarioOrigen().getId() != usuario.getId()) {
                            sePuedeBorrar = false;
                        }
                    }

                    //Si no se puede borrar mostramos un cartel avisando
                    if (!sePuedeBorrar) {
                        //Mostramos una ventana modal indicando que no se puede borrar
                        out.print("<div id='overlayModal'> </div>");
                        out.print("<div id='contenedorModal'>");
                        out.print("<h1>Error</h1>");
                        out.print("<p>Usted no puede borrar esa publicacion.</p>");
                        out.print("<div class='botones'>");
                        out.print("<div class='derecho'><a href='control?opcion=irAInicio&pag=" + (paginacion.getPaginaActual() + 1) + "'>Aceptar</a></div>");
                        out.print("</div>");//botones
                        out.print("</div>");//contenedorModal
                    } else {

                        //Comprobamos si está confirmado que queremos eliminarlo
                        if (paramConfirmado == null) { //Si no está confirmado mostramos la ventana de confirmación
                            //Mostramos la ventana modal
                            out.print("<div id='overlayModal'> </div>");
                            out.print("<div id='contenedorModal'>");
                            out.print("<h1>Confirmacion</h1>");
                            out.print("<p class='mensajeInformativo'>Esta seguro de que quiere borrar esta publicacion</p>");
                            out.print("<div class='botones'>");
                            out.print("<div class='izquierdo'><a href='control?opcion=irAInicio&pag=" + (paginacion.getPaginaActual() + 1) + "&borrar=" + request.getParameter("borrar") + "&confirmado=true'><input type='button' value='Borrar' style='cursor: pointer;'></a></div>");
                            out.print("<div class='derecho'><a href='control?opcion=irAInicio&pag=" + (paginacion.getPaginaActual() + 1) + "'><input type='button' value='Cancelar' style='cursor: pointer;'></a></div>");
                            out.print("</div>");//botones
                            out.print("</div>");//contenedorModal
                        } else {
                            if (mensajeGenerico instanceof Publicacion) {
                                //Lo cogemos como una publicación
                                Publicacion publicacion = (Publicacion) mensajeGenerico;
                                if (publicacion.getFoto() != null) {
                                    //Ruta del directorio donde están las fotos físicamente
                                    String rutaDestino = getServletContext().getRealPath("almacen");
                                    File destino = new File(rutaDestino); //Ruta destino
                                    //Cogemos la foto de la publicación
                                    Foto foto = publicacion.getFoto();
                                    //Obtenemos la posición física de la foto original
                                    File archivo = new File(destino, foto.getId() + ".jpg");
                                    //Eliminamos el archivo
                                    archivo.delete();
                                    //Obtenemos la posición física de la foto miniatura
                                    archivo = new File(destino, foto.getId() + "m.jpg");
                                    //Eliminamos el archivo
                                    archivo.delete();
                                }
                            }

                            //Si ya está confirmada la eliminación, eliminamos
                            //(Esto también elimina el registro de la foto)
                            mensajeGenerico.borrar();
                        }
                    }
                }
            } catch (Exception ex) {
            }
            // ---------------------VENTANA MODAL DEL RETO --------------------------------
            String opcionRespuestaReto = request.getParameter("opcion");
            if(opcionRespuestaReto!=null && opcionRespuestaReto.equals("respuestaReto")){
                
                Partida partida = (Partida)session.getAttribute("partida");
                UsuarioGenerico uRival = partida.getOponente(usuario);
                %>
                <div id="contenedorModal" style="height: 260px;">
                    <h1><%=uRival.getNombre()+" "+uRival.getApellidos() %>le reta a Ajedrez!</h1>
                        <div class="ventanaPrivado">
                            <input type="hidden" name="opcion" value="respuestaReto" />
                            <div class="privadoCabecera bajo">
                                <% 
                                String piezasRival ="";
                                if(partida.getColorRetador().equals("B"))
                                    piezasRival = "Blancas";
                                else
                                    piezasRival = "Negras";
                                %>
                                <label for="color"><%=uRival.getNombre()+" "+uRival.getApellidos()+" ha elegido "+piezasRival %></label>
                            </div>
                            <div class="privadoCabecera alto">
                                <label>Estadisticas Rival: </label>
                                <p>Ya los rellenaremos</p>
                            </div>
                        </div>
                        <div class="botones">
                            <a href="control?opcion=aceptarReto">
                            <div class="izquierdo" style="float: left;">
                                <input style="cursor: pointer;" type="submit" value="Aceptar" />
                            </div>
                            </a>
                            <a href="control?opcion=rechazarReto">
                                <div class="izquierdo" >
                                    <input style="cursor: pointer;" type="button" value="Rechazar" />
                                </div>
                            </a>
                            <a href="control?opcion=irAInicio">
                                <div class="derecho" style="float: right;">
                                    <input style="cursor: pointer;" type="button" value="Cerrar" />
                                </div>
                            </a>
                        </div>
                </div>
                <%
            }
            //--------------------HASTA AQUI VENTANA MODAL DEL RETO
        %>    



        <%@include file="cabecera.jsp" %>

        <div id="contenido">
            <%
            if (usuario.esAmigo(usuariomuro) || usuariomuro == usuario || usuario instanceof Administrador) {
                    //Altura personalizable para el bloque izquierdo y derecho
                    String alturaBloque = "1550px";
            %>
            <%@include file="izquierda.jsp" %>

            <div id="centro">
                <div id="estado">
                    <%
                        //Obtenemos la última publicacion que el usuariomuro hizo en su muro
                        //para mostrarla como estado...
                        MensajeGenerico estado = Publicacion.seleccionarEstado(usuariomuro);
                        if (estado != null) {
                            out.print(estado.getContenido());
                        } else {
                            out.print("- Sin mensaje de estado -");
                        }
                    %>
                </div>
                

                <div id="nuevapublicacion">
                    <form id="nueva" name="nueva" method="post" action="multipartServlet" enctype="multipart/form-data">
                        <label for="texto">Publicar:</label>
                        <textarea id="texto" name="texto"></textarea>
                        <input type="hidden" name="opcion" value="publicarPost" />
                        <input type="submit" id="enviar" name="enviar" />
                        <span id="archivo"><label for="foto">Subir Foto:</label><input type="file" id="foto" name="foto" /></span>
                    </form>
                </div>

                <div id="publicaciones">
                    <%
                        //Para manejar mejor el usuario origen del mensaje
                        UsuarioGenerico usuarioOrigen = null;
                        //Cogemos un cierto número de publicaciones para mostrar
                        List<MensajeGenerico> listPublicacion = new ArrayList();
                        listPublicacion = Publicacion.seleccionarPorDestinatario(usuariomuro, paginacion.offset(), paginacion.getRegistrosPorPagina());
                        boolean pubPropia = false;
                        for (MensajeGenerico publicacion : listPublicacion) {
                            usuarioOrigen = publicacion.getUsuarioOrigen();
                            if (usuarioOrigen.getId() == usuario.getId() || usuario instanceof Administrador) {
                                pubPropia = true;
                                out.print("<div class='mipublicacion'>");
                                out.print("<img src='almacen/" + usuarioOrigen.getId() + "pm.jpg' alt='foto' />");
                                out.print("<p>");
                                out.print("<em class='parrafoPublicacion'>");
                                out.print(usuarioOrigen.getNombre() + " " + usuarioOrigen.getApellidos() + ": ");
                                out.print("</em>");
                            } else {
                                pubPropia = false;
                                out.print("<div class='publicacion'>");
                                out.print("<a href='control?opcion=irAMuroAjeno&idUser=" + usuarioOrigen.getId() + "'>");
                                out.print("<img src='almacen/" + usuarioOrigen.getId() + "pm.jpg' alt='foto' />");
                                out.print("</a>");
                                out.print("<a href='control?opcion=irAMuroAjeno&idUser=" + usuarioOrigen.getId() + "'>");
                                out.print("<p>");
                                out.print("<em class='parrafoPublicacion'>");
                                out.print(usuarioOrigen.getNombre() + " " + usuarioOrigen.getApellidos() + ": ");
                                out.print("</em>");
                                out.print("</a>");

                            }

                            out.print(publicacion.getContenido());
                            out.print("</p>");
                            if (((Publicacion) publicacion).getFoto() != null) {
                                out.print("<div class='fotopublicacion'><img src='" + ((Publicacion) publicacion).getFoto().getRutaMiniatura() + "' /></div>");
                            }
                            out.print("<span class='pie' title='" + publicacion.getFechaString() + "'>" + publicacion.getCuantoTiempo() + "");
                            if (pubPropia) {
                                out.print("<a href='control?opcion=irAInicio&pag=" + (paginacion.getPaginaActual() + 1) + "&borrar=" + publicacion.getId() + "'><img class='imgBorrar' src='images/delete.png' /></a> ");
                            }
                            out.print("</span>");
                            out.print("</div>");

                            //Para cada publicación, cogemos sus comentarios
                            List<MensajeGenerico> listComentario = new ArrayList();
                            listComentario = Publicacion.seleccionarPorPublicacion(publicacion);
                            boolean comPropio = false;
                            for (MensajeGenerico comentario : listComentario) {
                                usuarioOrigen = comentario.getUsuarioOrigen();
                                if (usuarioOrigen.getId() == usuario.getId() || usuario instanceof Administrador) {
                                    comPropio = true;
                                    out.print("<div class='comentario'>");
                                    out.print("<img src='almacen/" + usuarioOrigen.getId() + "pm.jpg' alt='foto' />");
                                    out.print("<p>");
                                    out.print("<em class='parrafoPublicacion'>");
                                    out.print(usuarioOrigen.getNombre() + " " + usuarioOrigen.getApellidos() + ": ");
                                    out.print("</em>");
                                } else {
                                    comPropio = false;
                                    out.print("<div class='comentario'>");
                                    out.print("<a href='control?opcion=irAMuroAjeno&idUser=" + usuarioOrigen.getId() + "'>");
                                    out.print("<img src='almacen/" + usuarioOrigen.getId() + "pm.jpg' alt='foto' />");
                                    out.print("</a>");
                                    out.print("<p>");
                                    out.print("<a href='control?opcion=irAMuroAjeno&idUser=" + usuarioOrigen.getId() + "'>");
                                    out.print("<em class='parrafoPublicacion'>");
                                    out.print(usuarioOrigen.getNombre() + " " + usuarioOrigen.getApellidos() + ": ");
                                    out.print("</em>");
                                    out.print("</a>");

                                }
                                out.print(comentario.getContenido());
                                out.print("</p>");
                                out.print("<span class='pie' title='" + comentario.getFechaString() + "'>" + comentario.getCuantoTiempo() + "");
                                if (comPropio) {
                                    out.print("<a href='control?opcion=irAInicio&pag=" + (paginacion.getPaginaActual() + 1) + "&borrar=" + comentario.getId() + "'><img class='imgBorrar' src='images/delete.png' /></a> ");
                                }
                                out.print("</span></div>");
                            }

                            //Contestaciones a la publicacion (Comentarios)
                            out.print("<div class='nuevocomentario'>");
                            out.print("<form id='comentar' name='comentar' method='post' action='control'>");
                            out.print("<input type='text' id='texto' name='texto' />");
                            out.print("<input type='hidden' name='opcion' value='publicarComentario' />");
                            out.print("<input type='hidden' name='publicacion' value='" + publicacion.getId() + "' />");
                            out.print("<input type='submit' id='enviar' name='enviar' value='comentar' />");
                            out.print("</form>");
                            out.print("</div>");

                        }

                    %>



                </div>

                <div class="navegador">
                    <span class="active">Pag <%=(paginacion.getPaginaActual() + 1)%>/<%=(paginacion.ultimaPagina() + 1)%></span>   
                    <a class="first" href="control?opcion=irAInicio&pag=1">«</a>
                    <a class="prev" href="control?opcion=irAInicio&pag=<%=(paginacion.paginaAnterior() + 1)%>">‹</a>
                    <a class="next" href="control?opcion=irAInicio&pag=<%=(paginacion.paginaPosterior() + 1)%>">›</a>
                    <a class="last" href="control?opcion=irAInicio&pag=<%=(paginacion.ultimaPagina() + 1)%>">»</a>
                </div>                    

            </div>

            <div id="derecha" style="height: <%=alturaBloque%>" >
                <div id="sala">
                    <h1>Sala de Juegos</h1>
                    <ul>
                        <%
                            //El selector 0 indica que devuelva partidas no terminadas
                            List<Partida> listPartida = Partida.seleccionarPorUsuarioGenerico(usuario, 0);
                            if (listPartida != null && !listPartida.isEmpty()) {
                                for (Partida partida : listPartida) {
                                    UsuarioGenerico oponente = partida.getOponente(usuario);
                                    String estadoPartida = "";
                                    String claseCss = "";
                                    if(partida.getEstado()==0){
                                        estadoPartida = "No empezada";
                                        claseCss="noEmpezada";
                                    }if(partida.getEstado()==1){
                                        if(!partida.turno(usuario)){
                                            estadoPartida = "Mover";
                                            claseCss="turnoActual";
                                        }else{
                                            estadoPartida = "Esperando";
                                            claseCss="turnoOponente";
                                        }
                                    }if(partida.getEstado()==2){
                                        estadoPartida = "Fin";
                                        claseCss="noEmpezada";
                                    }
                                    if(partida.getEstado()==0){
                                        if(usuario.getId()==partida.getuRetado().getId()){
                                            out.print("<a href='control?opcion=irAPartida&id=" + partida.getIdPartida() + "'>"
                                                + "<span class='nombrepartida'>" + oponente.getNombre() + " " + oponente.getApellidos() + "</span>"
                                                + "<span class='estadopartida "+claseCss+"'>" + estadoPartida + "</span>"
                                                + "</a>");
                                        }else{
                                            out.print(""
                                                    + "<a href='#'>"
                                                    + "<span class='nombrepartida'>" + oponente.getNombre() + " " + oponente.getApellidos() + "</span>"
                                                    + "<span class='estadopartida "+claseCss+"'>" + estadoPartida + "</span>"
                                                    + "</a>");
                                        }
                                    }else{
                                        out.print("<a href='control?opcion=irAPartida&id=" + partida.getIdPartida() + "'>"
                                                + "<span class='nombrepartida'>" + oponente.getNombre() + " " + oponente.getApellidos() + "</span>"
                                                + "<span class='estadopartida "+claseCss+"'>" + estadoPartida + "</span>"
                                                + "</a>");
                                    }
                                    
                                    
                                    /*  + "<span class='nombrepartida'>" + oponente.getNombre() + " " + oponente.getApellidos() + "</span>"
                                            + "<span class='estadopartida'>[" + partida.getEstado() + "]</span>"*/
                                }
                            }
                        %>
                    </ul>
                </div>
            </div>

            <%
            } else {
            %>

            <div id="izquierda" style="height: 460px" >
                <div id="miniperfil">
                    <img src='almacen/<%=usuariomuro.getId()%>pm.jpg' alt='foto' />
                    <p><%= usuariomuro.getNombre()%><br /><%= usuariomuro.getApellidos()%></p>
                </div>
            </div>
            <div id="centro">

                <p class="avisoMuroAjeno">Esta persona no esta en su lista de amigos. Solo podra ver y comentar
                    en su perfil si son amigos</p>
                <a href="control?idUser=<%=usuariomuro.getId()%>&opcion=invitarAmigo">
                    <input class="botonAccionInvitarMuroAjeno" type="button" value="Invitar" >
                </a> 
            </div>

            <%
                }
            %>
            <%@include file="piepagina.jsp" %>

        </div>
    </body>
</html>
